﻿Public Class ReporteGuias

    Private oMaestra As New CMaestras
    Private oGuia As New CGuia

    Private Sub ReporteGuias_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.CargarAgentes()
        Me.dateDesde.Value = DateAdd(DateInterval.Day, -15, Date.Today)
    End Sub

    Private Sub CargarAgentes()
        Try
            Dim ds As New DataSet
            ds = oMaestra.GetTabla(CMaestras.Tabla.Agente)
            If (ds.Tables(0).Rows.Count > 0) Then
                Me.drpAgente.DataSource = CUtil.AgregarRegistro(ds.Tables(0), "Seleccione...")
                Me.drpAgente.ValueMember = ds.Tables(0).Columns(0).ColumnName
                Me.drpAgente.DisplayMember = ds.Tables(0).Columns(1).ColumnName
            Else
                MessageBox.Show("No se encontraron agentes. Deben ser creados primero", "Agentes", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        Catch ex As Exception
            MessageBox.Show("Ocurrió un error al cargar los agentes: " & ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
    End Sub

    Private Function Validar() As Boolean
        Dim mensaje As String = ""

        If (Trim(Me.txtNumeroReporte.Text).Length = 0) Then
            mensaje += "- Debe escribir el número del reporte" & Chr(13)
        Else
            If Not IsNumeric(Trim(Me.txtNumeroReporte.Text)) Then
                mensaje += "- El número del reporte no es válido" & Chr(13)
            End If
        End If
        'If (Me.drpAgente.SelectedValue = "0") Then
        '    mensaje += "- Debe seleccionar el agente"
        'End If
        If (Trim(Me.txtTasa.Text).Length = 0) Then
            mensaje += "- Debe escribir la tasa de cambio" & Chr(13)
        Else
            If Not IsNumeric(Trim(Me.txtTasa.Text)) Then
                mensaje += "- La tasa de cambio debe ser un valor numérico" & Chr(13)
            End If
        End If

        If (mensaje.Length > 0) Then
            MessageBox.Show(mensaje, "Datos incompletos", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Return False
        Else
            Return True
        End If
    End Function

    Private Function GetReporte(ByVal tipoGuia As String) As DataSet
        Dim ds As New DataSet
        Try
            ds = Me.oGuia.GetReporteGuias(CInt(Me.drpAgente.SelectedValue), Me.dateDesde.Value.ToString("yyyyMMdd"), Me.dateHasta.Value.ToString("yyyyMMdd"), tipoGuia, CDbl(Me.txtTasa.Text))
        Catch ex As Exception
            MessageBox.Show("No se pudo obtener la información para el reporte: " + ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
        Return ds
    End Function


    Private Sub btnVerReporte_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVerReporte.Click
        If (Me.Validar()) Then
            Dim tipoGuia As String = "PREPAID"
            If (Me.rbtnFleteAlCobro.Checked) Then
                tipoGuia = "COLLECT"
            End If

            Dim ds As DataSet = Me.GetReporte(tipoGuia)
            If (ds.Tables.Count > 0) Then
                If (ds.Tables(0).Rows.Count > 0) Then
                    My.Forms.VerReporte.ds = ds
                    My.Forms.VerReporte.fechaDesde = Me.dateDesde.Value
                    My.Forms.VerReporte.fechaHasta = Me.dateHasta.Value
                    My.Forms.VerReporte.fechaReporte = Me.dateFechaReporte.Value
                    My.Forms.VerReporte.fechaVencimiento = Me.dateFechaVencimiento.Value
                    My.Forms.VerReporte.idAgente = CInt(Me.drpAgente.SelectedValue)
                    My.Forms.VerReporte.numeroReporte = CInt(Me.txtNumeroReporte.Text)
                    My.Forms.VerReporte.tasa = CDbl(Me.txtTasa.Text)                    
                    My.Forms.VerReporte.tipoGuia = tipoGuia                    
                    My.Forms.VerReporte.MdiParent = My.Forms.Principal
                    My.Forms.VerReporte.Show()
                Else
                    MessageBox.Show("No se encontraron registros con los criterios seleccionados", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            Else
                MessageBox.Show("No se encontraron registros", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        End If
    End Sub
End Class